home *** CD-ROM | disk | FTP | other *** search
- /*
-
- NSIS Modern User Interface
- Start Menu folder page
-
- */
-
- ;--------------------------------
- ;Page interface settings and variables
-
- !macro MUI_STARTMENUPAGE_INTERFACE
-
- !ifndef MUI_STARTMENUPAGE_INTERFACE
- !define MUI_STARTMENUPAGE_INTERFACE
- Var mui.StartMenuPage
- Var mui.StartMenuPage.Location
- Var mui.StartMenuPage.FolderList
-
- Var mui.StartMenuPage.Temp
- !endif
-
- !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME
- !ifndef MUI_STARTMENUPAGE_REGISTRY_VARIABLES
- !define MUI_STARTMENUPAGE_REGISTRY_VARIABLES
- Var mui.StartMenuPage.RegistryLocation
- !endif
- !endif
-
- !macroend
-
-
- ;--------------------------------
- ;Page declaration
-
- !macro MUI_PAGEDECLARATION_STARTMENU ID VAR
-
- !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}STARTMENUPAGE ""
- !insertmacro MUI_STARTMENUPAGE_INTERFACE
-
- !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_DEFAULTFOLDER "$(^Name)"
- !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_TOP "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_TOP)"
- !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_CHECKBOX "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_CHECKBOX)"
-
- !define MUI_STARTMENUPAGE_VARIABLE "${VAR}"
- !define "MUI_STARTMENUPAGE_${ID}_VARIABLE" "${MUI_STARTMENUPAGE_VARIABLE}"
- !define "MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
- !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT
- !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT" "${MUI_STARTMENUPAGE_REGISTRY_ROOT}"
- !endif
- !ifdef MUI_STARTMENUPAGE_REGISTRY_KEY
- !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY" "${MUI_STARTMENUPAGE_REGISTRY_KEY}"
- !endif
- !ifdef MUI_STARTMENUPAGE_REGISTRY_VALUENAME
- !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
- !endif
-
- PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom
-
- PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID}
-
- Caption " "
-
- PageExEnd
-
- !insertmacro MUI_FUNCTION_STARTMENUPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID}
-
- !undef MUI_STARTMENUPAGE_VARIABLE
- !undef MUI_STARTMENUPAGE_TEXT_TOP
- !undef MUI_STARTMENUPAGE_TEXT_CHECKBOX
- !undef MUI_STARTMENUPAGE_DEFAULTFOLDER
- !insertmacro MUI_UNSET MUI_STARTMENUPAGE_NODISABLE
- !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_ROOT
- !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_KEY
- !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_VALUENAME
-
- !macroend
-
- !macro MUI_PAGE_STARTMENU ID VAR
-
- !verbose push
- !verbose ${MUI_VERBOSE}
-
- !insertmacro MUI_PAGE_INIT
- !insertmacro MUI_PAGEDECLARATION_STARTMENU "${ID}" "${VAR}"
-
- !verbose pop
-
- !macroend
-
- ;--------------------------------
- ;Page functions
-
- !macro MUI_FUNCTION_STARTMENUPAGE PRE LEAVE
-
- Function "${PRE}"
-
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE
-
- !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME
-
- ;Get Start Menu location from registry
-
- ${if} "${MUI_STARTMENUPAGE_VARIABLE}" == ""
-
- ReadRegStr $mui.StartMenuPage.RegistryLocation "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
- ${if} $mui.StartMenuPage.RegistryLocation != ""
- StrCpy "${MUI_STARTMENUPAGE_VARIABLE}" $mui.StartMenuPage.RegistryLocation
- ${endif}
-
- ClearErrors
-
- ${endif}
-
- !endif
-
- !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_TEXT_STARTMENU_TITLE) $(MUI_TEXT_STARTMENU_SUBTITLE)
-
- ${if} $(^RTL) == "0"
- !ifndef MUI_STARTMENUPAGE_NODISABLE
- StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
- !else
- StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
- !endif
- ${else}
- !ifndef MUI_STARTMENUPAGE_NODISABLE
- StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
- !else
- StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
- !endif
- ${endif}
-
- Pop $mui.StartMenuPage
-
- ;Get control handles
- GetDlgItem $mui.StartMenuPage.Location $mui.StartMenuPage 1002
- GetDlgItem $mui.StartMenuPage.FolderList $mui.StartMenuPage 1004
-
- !ifdef MUI_STARTMENUPAGE_BGCOLOR
- SetCtlColors $mui.StartMenuPage.Location "" "${MUI_STARTMENUPAGE_BGCOLOR}"
- SetCtlColors $mui.StartMenuMenu.FolderList "" "${MUI_STARTMENUPAGE_BGCOLOR}"
- !endif
-
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW
-
- StartMenu::Show
-
- Pop $mui.StartMenuPage.Temp
- ${if} $mui.StartMenuPage.Temp == "success"
- Pop "${MUI_STARTMENUPAGE_VARIABLE}"
- ${endif}
-
- FunctionEnd
-
- Function "${LEAVE}"
-
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE
-
- FunctionEnd
-
- !macroend
-
-
- ;--------------------------------
- ;Script macros to get Start Menu folder
-
- !macro MUI_STARTMENU_GETFOLDER ID VAR
-
- !verbose push
- !verbose ${MUI_VERBOSE}
-
- ;Get Start Menu folder from registry
- ;Can be called from the script in the uninstaller
-
- !ifdef MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME
-
- ReadRegStr $mui.StartMenuPage.RegistryLocation "${MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME}"
-
- ${if} $mui.StartMenuPage.RegistryLocation != ""
- StrCpy "${VAR}" $mui.StartMenuPage.RegistryLocation
- ${else}
- StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}"
- ${endif}
-
- !else
-
- StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}"
-
- !endif
-
- !verbose pop
-
- !macroend
-
- !macro MUI_STARTMENU_WRITE_BEGIN ID
-
- ;The code in the script to write the shortcuts should be put between the
- ;MUI_STARTMENU_WRITE_BEGIN and MUI_STARTMENU_WRITE_END macros
-
- !verbose push
- !verbose ${MUI_VERBOSE}
-
- !define MUI_STARTMENUPAGE_CURRENT_ID "${ID}"
-
- StrCpy $mui.StartMenuPage.Temp "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" 1
-
- ;If the folder start with >, the user has chosen not to create a shortcut
- ${if} $mui.StartMenuPage.Temp != ">"
-
- ${if} "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" == ""
- ;Get folder from registry if the variable doesn't contain anything
- !insertmacro MUI_STARTMENU_GETFOLDER "${MUI_STARTMENUPAGE_CURRENT_ID}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}"
- ${endif}
-
- !verbose pop
-
- !macroend
-
- !macro MUI_STARTMENU_WRITE_END
-
- !verbose push
- !verbose ${MUI_VERBOSE}
-
- !ifdef MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME
- ;Write folder to registry
- WriteRegStr "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}"
- !endif
-
- ${endif}
-
- !undef MUI_STARTMENUPAGE_CURRENT_ID
-
- !verbose pop
-
- !macroend
-
-